//#define _CRT_SECURE_NO_WARNINGS 1
//
//#include<bits/stdc++.h>
//
//using namespace std;
//
//
//int main()
//{
//	int dp[25][25] = { 0 };
//	int n, m, x, y;
//	cin >> n >> m >> x >> y;
//	x += 1;
//	y += 1;
//	dp[0][1] = 1;
//
//	for (int i = 1; i <= n+1; i++)
//		for (int j = 1; j <= m+1; j++)
//			if ((i != x && j != y && (abs(i - x) + abs(j - y)) == 3) || ((i == x) && (j == y)))
//				dp[i][j] = 0;
//			else
//				dp[i][j] = dp[i - 1][j] + dp[i][j - 1];
//
//	cout << dp[n+1][m+1] << endl;
//
//	return 0;
//}



//#include<bits/stdc++.h>
//
//using namespace std;
//
//
//int main()
//{
//	long long n, m, a, b;
//	cin >> n >> m >> a >> b;
//
//	long long ret = 0;
//	for (long long x = 0; x <= min(n / 2, m); x++)
//	{
//		long long y = min((n - 2 * x), (m - x) / 2);
//		ret = max(ret, x * a + y * b);
//	}
//
//	cout << ret;
//
//	return 0;
//}



//#include<bits/stdc++.h>
//
//using namespace std;
//
//
//int main()
//{
//	int n;
//	cin >> n;
//	int t, k, ret = 0;
//	cin >> t;
//	if (n == 0)
//	{
//		cout << 0 << endl;
//		return 0;
//	}
//	n--;
//	while (n--)
//	{
//		cin >> k;
//		if (k > t)
//			ret += (k - t);
//		t = k;
//	}
//
//	cout << ret << endl;
//
//	return 0;
//}





//
//#include<bits/stdc++.h>
//
//using namespace std;
//
//
//int main()
//{
//	string s;
//	getline(cin,s);
//	vector<string> strs;
//	string tmp;
//	for (auto ch : s)
//	{
//		if (ch != ' ')
//		{
//			tmp += ch;
//		}
//		else
//		{
//			strs.push_back(tmp);
//			tmp = "";
//		}
//	}
//	if(!tmp.empty())
//	strs.push_back(tmp);
//
//	while (!strs.empty())
//	{
//		cout << strs.back() << " ";
//		strs.pop_back();
//	}
//
//	return 0;
//}

//
//#include<bits/stdc++.h>
//
//using namespace std;
//
//bool check[256];
//
//int main()
//{
//	string s1, s2,res;
//	getline(cin, s1);
//	getline(cin, s2);
//
//	for(auto ch :s2)
//	{
//		check[ch] = true;
//	}
//
//	for (auto ch : s1)
//	{
//		if (!check[ch])
//		{
//			res += ch;
//		}
//	}
//
//	cout << res;
//
//	return 0;
//}


///*
//struct ListNode {
//	int val;
//	struct ListNode *next;
//	ListNode(int x) :
//			val(x), next(NULL) {
//	}
//};*/
//class Solution {
//public:
//	ListNode* FindFirstCommonNode(ListNode* pHead1, ListNode* pHead2)
//	{
//		ListNode* cur1 = pHead1;
//		ListNode* cur2 = pHead2;
//
//		while (cur1 != cur2)
//		{
//			cur1 = cur1 != NULL ? cur1->next : pHead2;
//			cur2 = cur2 != NULL ? cur2->next : pHead1;
//		}
//
//		return cur1;
//	}
//};



#include<bits/stdc++.h>

using namespace std;

int main()
{
	int n;
	string str;

	cin >> n;
	cin >> str;
	long long s = 0, h = 0, y = 0;
	for (int i = 0; i < n; i++)
	{
		char ch = str[i];
		if (ch == 's') s++;
		else if (ch == 'h') h+=s;
		else if (ch == 'y') y+=h;
	}

	cout << y;

	return 0;
}